Основные возможности и характеристики
- Скрытие текста или новости в зависимости от количества комментариев, публикаций, а также значения N параметра;
- Добавлена возможность самостоятельно указывать какой параметр использовать для хайда (ранее это была репа, сейчас указывайте что хотите);
- Можна ставить хайд по какому-то одному (или двум) параметру;
- Поддержка VIP групп, на котрые действие хайда не распостраняется;
- Поддержка групп "провинившихся", которые не видят скрытый текст и скрытые новости независимо от их параметров;
- Пользователи со стажем менее Х дней не могут видеть скрытый текст независимо от их параметров;
- Пользователи с негативным N параметром не могут видеть скрытый текст;
- Возможность включения/выключения использования N параметра;
- При установке всех параметров равными нулю, скрытый текст/новость смогут видеть только VIP пользователи;
- "Быстрая кнопка" на панели бб-кодов;
- Гибкая настройка модуля, можна влючить/выключить любую функцию;
- Добавлена возможность использовать хайд в шаблонах;
- Изменена работа с датой, теперь всё точнее и "ровнее";
- Изменён баг когда параметры хайда уходили в минус;
- Добавлена полная совместимость тегов хайда с другими модулями (тоесть в любом модуле, который выводит информацию на главную, можна использовать теги хайда);
- Теперь модуль полностью работает в комментариях;
Установка модуля
Будьте предельно внимательны, установка не лёгкая.
| 1. | Загружаем на сервер содержимое паппки upload. |
| Незабываем выставить файлу /engine/data/protect_config.php права на запись. | |
| 2. | Выполняем SQL запрос: |
ALTER TABLE `dle_post` ADD `hide` VARCHAR( 255 ) NOT NULL DEFAULT '' |
|
| 3. | В файле engine/modules/functions.php ищем: |
function formatsize($file_size) { |
|
| выше вставляем: |
|
require_once ROOT_DIR.'/engine/modules/protect_hide.php'; |
|
| 4. | В файле engine/modules/show.short.php ищем: |
else $tpl->set_block( "'\\[hide\\](.*?)\\[/hide\\]'si", "<div class=\"quote\">" . $lang['news_regus'] . "</div>" ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 5. | В файле index.php ищем: |
echo $tpl->result['main']; |
|
| меняем на: |
|
$main_data = $tpl->result['main'];
/////////////////////////////////////////////////////////////////////////
require_once ROOT_DIR.'/engine/modules/protect_hide.php';
$main_data = preg_replace("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[\/hide\]#ie", 'text_protect( $1 , $2 , $3 , "$4" )', $main_data );
$main_data = preg_replace("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[\/hidden\]#ie", 'hidden_text( $1 , $2 , $3 , "$4" )', $main_data );
/////////////////////////////////////////////////////////////////////////
echo $main_data; |
|
| 6. | В файле engine/modules/show.full.php ищем: |
$tpl->copy_template = str_replace( "[xfvalue_{$preg_safe_name}]", stripslashes( $xfieldsdata[$value[0]] ), $tpl->copy_template );
}
} |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 7. | В этом же файле ищем: |
$tpl->set( '{group-name}', $user_group[$row['user_group']]['group_name'] ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 8. | Опять здесь же ищем: |
if( ! $row['approve'] ) $allow_comments = false; |
|
| ниже вставляем: |
|
include ENGINE_DIR . '/modules/hide_news.php'; |
|
| 9. | Снова таки этот же файл, ищем: |
if( ! $news_found and ! $perm ) msgbox( $lang['all_err_1'], "<b>
{$user_group[$member_id['user_group']]['group_name']} </b> " . $lang['news_err_28'] ); |
|
| заменяем на: |
|
if($perm==0 and $perm_acces==0 ) msgbox( "STOP!!!",$alert );
elseif( ! $news_found and ! $perm ) msgbox( $lang['all_err_1'], "<b>
{$user_group[$member_id['user_group']]['group_name']} </b> " . $lang['news_err_28'] ); |
|
| 10. | В файле /engine/modules/static.php ищем: |
$tpl->set( '[/print-link]', "</a>" ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 11. | В файле engine/ajax/addcomments.php ищем: |
else $tpl->set_block( "'\\[hide\\](.*?)\\[/hide\\]'si", "<div class=\"quote\">" . $lang['news_regus'] . "</div>" ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 12. | В файле engine/ajax/editcomments.php ищем: |
$comm_txt = preg_replace( "'\[hide\](.*?)\[/hide\]'si", "\\1", $comm_txt ); |
|
| ниже вставляем: |
|
$comm_txt = preg_replace("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )', $comm_txt );
$comm_txt = preg_replace("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )', $comm_txt ); |
|
| 13. | В файле engine/ajax/editnews.php ищем: |
if( $config['files_allow'] == "yes" ) if( strpos( $news_txt, "[attachment=" ) !== false ) {
$news_txt = show_attach( $news_txt, $id );
} |
|
| ниже вставляем: |
|
$news_txt = preg_replace("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )', $news_txt );
$news_txt = preg_replace("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )', $news_txt ); |
|
| 14. | В файле engine/modules/lastcomments.php ищем: |
else $tpl->set_block( "'\\[hide\\](.*?)\\[/hide\\]'si", "<div class=\"quote\">" . $lang['news_regus'] . "</div>" ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 15. | В файле engine/modules/search.php ищем: |
$txt = preg_replace( "/\[hide\](.*?)\[\/hide\]/ims", "", $txt ); |
|
| ниже вставляем: |
|
$txt = preg_replace("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )', $txt );
$txt = preg_replace("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )', $txt ); |
|
| 16. | Здесь же ищем: |
else $tpl->set_block( "'\\[hide\\](.*?)\\[/hide\\]'si", "" ); |
|
| ниже вставляем: |
|
$tpl->set_block("#\[hide=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hide\]#ies", 'text_protect( $1 , $2 , $3 , "$4" )');
$tpl->set_block("#\[hidden=(.*?)\,(.*?)\,(.*?)\](.*?)\[/hidden\]#ies", 'hidden_text( $1 , $2 , $3 , "$4" )'); |
|
| 17. | В файле engine/inc/addnews.php ищем: |
if( ! $user_group[$member_id['user_group']]['admin_addnews'] ) {
msg( "error", $lang['index_denied'], $lang['index_denied'] );
} |
|
| ниже вставляем: |
|
/*---------------*/
require ROOT_DIR.'/engine/data/protect_config.php';
$sets['fb_msg'] = intval($sets['fb_msg']);
$sets['fb_news'] = intval($sets['fb_news']);
$sets['fb_repa'] = intval($sets['fb_repa']);
if ($sets['run_mod'] == 1 and $sets['news_hide'] == 1){ if ($sets['repa_used'] == 1) {
$body_rep="<tr><td width='20' style='padding-bottom:5px;'>Репутация</td><td style='padding-bottom:5px;'>
<input type='text' value='".$sets['fb_repa']."' size='5' name='needrepa' class=edit></td></tr>";}
else{$body_rep='';} $body="<tr><td width='20' style='padding-bottom:5px;'>Скрывать новость?</td>
<td style='padding-bottom:5px;'><select name='onoff'>
<option value='1'> Да </option>
<option value='0' selected='selected'> Нет </option>
</select></td></tr>".$body_rep."<tr>
<td width='20' style='padding-bottom:5px;'>Новостей</td><td style='padding-bottom:5px;'>
<input type='text' value=\"".$sets['fb_news']."\" size='5' name='neednews' class='edit'></td></tr>
<tr><td width='20' style='padding-bottom:5px;'>Сообщений</td><td style='padding-bottom:5px;'>
<input type='text' value=\"".$sets['fb_msg']."\" size='5' name='needmsg' class='edit'></td></tr>
<tr><td colspan='2'><div class='hr_line'></div></td></tr>";}else{$body='';}
/*--------------*/ |
|
| 18. | Продолжаем искать: |
access, symbol, flag, tags, metatitle |
|
| заменяем на: |
|
access, symbol, flag, tags, metatitle, hide |
|
| 19. | Здесь же находим:: |
'$catalog_url', '1', '{$_POST['tags']}', '{$metatags['title']}' |
|
| заменяем на: |
|
'$catalog_url', '1', '{$_POST['tags']}', '{$metatags['title']}', '{$protect}') |
|
| 20. | В файле engine/inc/editnews.php ищем: |
if( ! $user_group[$member_id['user_group']]['admin_editnews'] ) {
msg( "error", $lang['addnews_denied'], $lang['edit_denied'] );
} |
|
| ниже вставляем: |
|
require ROOT_DIR.'/engine/data/protect_config.php'; |
|
| 21. | Снова ищем: |
$row = $db->super_query( "SELECT * FROM " . PREFIX . "_post where id = '$id'" ); |
|
| ниже пишем: |
|
/*---------------*/
if ($row['hide']!=''){
$pieces = explode("|", $row['hide']);
$need['use'] = intval($pieces[0]);
$need['repa'] = intval($pieces[1]);
$need['news'] = intval($pieces[2]);
$need['msg'] = intval($pieces[3]);
if ($sets['repa_used'] == 1) {$user['repa']=$member_id['repa'];}else{$user['repa']= 0;}
$user['news']=$member_id['news_num'];
$user['msg'] =$member_id['comm_num'];}
if ($need['use']==1){$checked['yes'] ="selected=\"selected\""; {$checked['no'] ="";}}
else {$checked['no'] ="selected=\"selected\""; {$checked['yes'] ="";}}
if ($sets['run_mod'] == 1 and $sets['news_hide'] == 1){
if ($sets['repa_used'] == 1) {
$body_rep="<tr><td width='20' style='padding-bottom:5px;'>Репутация</td><td style='padding-bottom:5px;'>
<input type='text' value='".$need['repa']."' size='5' name='needrepa' class=edit></td></tr>";}
else{$body_rep='';}
$body="<tr>
<td width='20' style='padding-bottom:5px;'>Скрывать новость?</td>
<td style='padding-bottom:5px;'><select name='onoff'>
<option value='1' ".$checked['yes']."> Да </option>
<option value='0' ".$checked['no']."> Нет </option>
</select></td></tr>
".$body_rep."
<tr><td width='20' style='padding-bottom:5px;'>Новостей</td><td style='padding-bottom:5px;'>
<input type='text' value=\"".$need['news']."\" size='5' name='neednews' class='edit'></td></tr>
<tr><td width='20' style='padding-bottom:5px;'>Сообщений</td><td style='padding-bottom:5px;'>
<input type='text' value=\"".$need['msg']."\" size='5' name='needmsg' class='edit'></td></tr>
<tr><td colspan='2'><div class='hr_line'></div></td></tr>";
}else{$body='';}
/*--------------*/ |
|
| 22. | Находим: |
$view_edit = isset( $_POST['view_edit'] ) ? intval( $_POST['view_edit'] ) : 0; |
|
| ниже вставляем: |
|
$post_hide['use'] = intval( $_POST['onoff'] );
$post_hide['news'] = intval( $_POST['neednews'] );
$post_hide['msg'] = intval( $_POST['needmsg'] );
$post_hide['repa'] = intval( $_POST['needrepa'] );
$hide=$db->safesql($post_hide['use'].'|'.$post_hide['repa'].'|'.$post_hide['news'].'|'.$post_hide['msg']); |
|
| 23. | Опять ищем (данный код находится дважды, следовательно и заменить его нужно тоже дважды): |
view_edit='$view_edit', tags='{$_POST['tags']}', metatitle='{$metatags['title']}' |
|
| меняем на: |
|
view_edit='$view_edit', tags='{$_POST['tags']}', metatitle='{$metatags['title']}', hide='{$hide}' |
|
| 24. | В файле admin.php ищем: |
'iptools', |
|
| ниже вставляем: |
|
'hide_admin', |
|
| 25. | В файле engine/inc/options.php ищем: |
$options['filter'] = array ( |
|
| ниже вставляем: |
|
array ( 'name' => "Hide", 'url' => "$PHP_SELF?mod=hide_admin", 'descr' => "Настройки модуля Hide", 'image' => "hide_img.png", 'access' => "admin" ), |
|
| 26. | В файле /engine/inc/include/inserttag.php ищем: |
if(!defined('DATALIFEENGINE'))
{
die("Hacking attempt!");
} |
|
| ниже вставляем: |
|
require ROOT_DIR.'/engine/data/protect_config.php';
if ($sets['run_mod']==1 and $sets['fastbutton']==1){
$hide_fb['1'] = "<div id=\"b_spoiler\" class=\"editor_button\" onclick=\"fast_button()\">
<img title=\"[hide={$sets['fb_repa']},{$sets['fb_news']},{$sets['fb_msg']}]text[/hide]\"
src=\"/engine/skins/bbcodes/images/fast_hide.gif\" width=\"23\" height=\"25\" border=\"0\">
</div>";
$hide_fb['2'] = "<div id=\"b_spoiler\" class=\"editor_button\" onclick=\"fast_button1()\">
<img title=\"[hidden={$sets['fb_repa']},{$sets['fb_news']},{$sets['fb_msg']}]text[/hidden]\"
src=\"/engine/skins/bbcodes/images/fast_hide1.gif\" width=\"23\" height=\"25\" border=\"0\">
</div>";
}else{$hide_fb[1] = "";$hide_fb[2] = "";} |
|
| 27. | Тут же ищем: |
--> </SCRIPT> |
|
| выше вставляем: |
|
function fast_button()
{doInsert("[hide={$sets['fb_repa']},{$sets['fb_news']},{$sets['fb_msg']}]", "[/hide]", false);}
function fast_button1()
{doInsert("[hidden={$sets['fb_repa']},{$sets['fb_news']},{$sets['fb_msg']}]", "[/hidden]", false);} |
|
| 28. | И наконец-то ищем: |
<div id="b_spoiler" class="editor_button" onclick="simpletag('spoiler')">
<img src="engine/skins/bbcodes/images/spoiler.gif" width="23" height="25" border="0"></div> |
|
| ниже пишем: |
|
{$hide_fb['1']}
{$hide_fb['2']} |
|
| 29. | В любом .css файле вашего шаблона в конце пишем: |
.hide_stop {
border: 1px dotted #FF0000;
padding: 5px 5px 5px 5px;
background: #FFEAEA;
}
.hide_good {
border: 1px dotted #00CC00;
padding: 5px 5px 5px 5px;
background: #EBFFEA;
}
.hide_in {
border: 1px dashed #00CC00;
padding: 3px 3px 3px 3px;
background: #D1FEC2;
} |
Настройка и правила использования:
| 1. | Сразу после установки зайдите в админку модуля
и установите "VIP" и "забаненную" группы, по надобности включите/отключите
использование модуля репутации или "быстрой кнопки". Кстати кнопка добавлена на панель бб-кодов только в админке. Почему? Потому что более всего она будет использоваться именно при добавлении новостей с админпанели, в остальных случаях можна обойтись и без неё (так как ради её добавления на все панели бб-кодов, прийдётся значительно усложнить и без того непростую установку.) |
| 2. | Хайд нужно формировать таким образом независимо
от того включено ли использование модуля репутации: [hide=10,15,20]скрытый текст[/hide] - скрытие по принципу "или" [hidden=10,15,20]скрытый текст[/hidden] - скрытие по принципу "и" где 10 - требуемая репутация (если отключено в админке, то значение просто небудет учитываться) 15 - требуемое количество новостей 20 - требуемое количество комментариев Если вы хотите снять зависимость хайда от какого-то параметра - прировняйте его нулю. Тоесть текст находящийся под [hide=10,15,0]текст[/hide] или [hidden=10,15,0]текст[/hidden] сможет увидеть пользователь у которого 10 баллов репутации или он опубликовал 15 новостей, от количества комментариев такой хайд зависеть небудет. А вот содержимое хайда [hide=0,0,0]текст[/hide] или [hidden=0,0,0]текст[/hidden] смогут увидеть только "VIP" пользователи. |
Приятного использования, надеюсь что модуль Вам понравится.
Автор модуля - Gauss.
Сайт поддержки - cmska.org.ua
Кстати хотелось бы заранее поговорить о тех поддержке модуля. Бывает время, когда я
не имею возможности каким либо образом выйти на связь (icq, e-mail, чат...), все мы живём в реальном мире и у всех могут возникнуть
екстренные ситуации, именно потому ненужно кричать во все стороны что автора нет в асе уже третий день и что Вас кинули.
Я обязательно отвечу на все Ваши вопросы.
Также стоит вспомнить и о паблике. Если появляется паблик этого модуля - тех поддержка автоматически "отключается".
С уважением, Gauss